#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

// 练习2： 父进程 可以 从键盘上输入数据，发送给子进程，当父进程发送 "exit"时，子进程结束，并且等待子进程结束之后也退出。

int main()
{
    int fd[2];
    int ret = pipe(fd);
    if (ret != 0)
    {
        return -1;
    }

    printf("%d %d\n", fd[0], fd[1]);

    pid_t pid = fork();

    if (pid == -1)
    {
        perror("fork");
        return -1;
    }

    if (pid > 0)
    {
        char buf[1024];
        while (1)
        {
            memset(buf, 0, sizeof(buf));
            read(fd[0], buf, sizeof(buf));
            if (strcmp(buf, "exit") == 0)
            {
                break;
            }
            // printf("buf = %s\n", buf);
        }
    }

    if (pid == 0)
    {
        char buf[1024];
        while (1)
        {
            memset(buf, 0, sizeof(buf));
            read(0, buf, sizeof(buf));
            write(fd[1], buf, strlen(buf));
            printf("child buf = %s\n", buf);
            if (strcmp(buf, "exit") == 0)
            {
                exit(0);
            }
        }
    }
}